package org.xbs.demo1.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.xbs.demo1.pojo.User;
import org.xbs.demo1.pojo.UserQueryParam;
import org.xbs.demo1.result.Result;
import org.xbs.demo1.service.IUserService;

import java.io.IOException;
import java.util.List;

@Slf4j
@RestController
@RequestMapping("/users")
@CrossOrigin
public class UserController {
    @Autowired//括号内输入对应的前端地址
    private IUserService userService;
    //修改用户前的查询回显
    @GetMapping("/{id}")
    public Result getUserById(@PathVariable("id") Integer id) throws IOException {
        //日志记录操作
        log.info("查询用户id：{}", id);
        //用userService中的getUserById()方法查询回显
        return Result.success(userService.getUserById(id));
    }
    //修改用户,以请求体输入
    /*
    必填的字段有姓名，性别（由前端提供选择）传递回去的数据也前端自己处理，手机号，职位（由前端提供选择），部门id（前端提供选择），
    入职时间（前端提供选择），创建时间，更新时间（后两条不用传由后端处理）
     */
    @PostMapping//希望做到可以单独修改的操作，即需要用到动态sql
    public Result updateUser(@RequestBody User user) throws IOException {
        //日志记录修改的操作
        log.info("修改用户信息：{}", user);
        //调用userService中的updateUser()方法
        userService.updateUser(user);
        //返回一个success结果
        return Result.success();
    }
    //条件分页查询
    @GetMapping
    public Result getUsers(UserQueryParam userQueryParam) throws IOException {
        //日志记录条件分页查询用户信息
        log.info("条件分页查询用户信息：{}",userQueryParam);
        //调用userService中的getUsers()方法
        return Result.success(userService.getUsers(userQueryParam));
    }
    //批量删除用户(这个方法顺带是实现了单独删除用户)
    @DeleteMapping//url地址中传入？ids=1，2，3根据id删除
    public Result deleteUsers(@RequestParam("ids") List<Integer> ids){
        //日志记录批量删除用户信息
        log.info("根据id批量删除用户信息：{}",ids);
        //调用userService中的deleteUsers()方法
        userService.deleteUsers(ids);
        //返回一个success结果
        return Result.success();
    }

    //批量添加用户
    @PutMapping
    public Result addUsers(@RequestBody List<User> users) throws IOException {
        //日志记录批量添加用户信息
        log.info("批量添加用户信息：{}",users);
        //调用userService中的addUsers()方法
        userService.addUsers(users);
        //返回一个success结果
        return Result.success();
    }



}
